package com.psychologyCommunity.Community.Contoller;

import com.psychologyCommunity.Community.service.DataService;
import com.sun.org.apache.xpath.internal.operations.Mod;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.Date;

@Controller
public class DateController {
    //三个方法：1.访问 打开统计网页页面的访问 2.以及两个按钮统计UV、DAU的方法
    @Autowired
    private DataService dataService;
    //1统计页面
    @RequestMapping(path = "/data",method = {RequestMethod.GET,RequestMethod.POST})
    public String getDataPage(){
         return "/site/admin/data";
    }
    //统计网站UV
    @RequestMapping(path = "/data/uv",method = RequestMethod.POST)
    //@DateTimeFormat 告诉服务器这个日期的格式pattern是这个样子的
    public String getUV(@DateTimeFormat(pattern = "yyyy-MM-dd") Date start,
                        @DateTimeFormat(pattern = "yyyy-MM-dd") Date end,
                        Model model){
        long uv=dataService.calculateUV(start,end);//这个区间内的UV
        model.addAttribute("uvResult",uv);
        //点击开始统计-按钮 服务器做了统计，又回到页面，起始和结束的年月日 还是保留 显示在页面 比较好
        model.addAttribute("uvStartDate",start);
        model.addAttribute("uvEndDate",end);
        //如果像之前一样  return "/site/admin/***";那返回的是给dispatchServlet，因为这个方法是dispatchServlet调用的
        //然后dispatchServlet得到了这个模板，然后让模板去做后序的处理，
        //而forward声明当前的方法只能把整个请求处理一半，还需要另一个方法去处理请求，另一个方法也是和它平级的方法
        return "forward:/data";//转发给了上面的 /data方法 但这还是一个方法之内，要注意的是 /data方法也得支持post请求
    }
    //统计活跃用户
    @RequestMapping(path = "/data/dau",method = RequestMethod.POST)
    public String getDAU(@DateTimeFormat(pattern = "yyyy-MM-dd") Date start,
                         @DateTimeFormat(pattern = "yyyy-MM-dd") Date end,
                         Model model){
        long dau=dataService.calculateDAN(start,end);//这个区间内的UV
        model.addAttribute("dauResult",dau);
        //点击开始统计-按钮 服务器做了统计，又回到页面，起始和结束的年月日 还是保留 显示在页面 比较好
        model.addAttribute("dauStartDate",start);
        model.addAttribute("dauEndDate",end);
        return "forward:/data";//转发给了上面的 /data方法 但这还是一个方法之内，要注意的是 /data方法也得支持post请求
    }
}
